package com.cat.util.join;

import java.lang.annotation.*;

/**
 * 左外连接效果的注解
 */
@Target({ElementType.FIELD})
@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface LeftOuter {

    /**
     * 左边数据的外键属性
     * @return
     */
    String leftProp() default "{" + Parameter.PARAM_LEFT_RECIVE_PROP_EXP + "}Id";

    /**
     * 右边数据层的类从spring上下文中获取真实类
     * @return
     */
    Class<?> right();

    /**
     * 右边连接的方法
     * @return
     */
    String rightMethod() default "query";

    /**
     * 右边的与左边关联字段的属性
     * @return
     */
    String rightProp() default "id";

    /**
     * 右边转换为左边的转换类
     * @return
     */
    Class<? extends Converter> converter() default AutoConverter.class;

    /**
     * 是否递归多层
     * @return
     */
    boolean recursion() default false;
}
